home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / make / make.doc next >
Text File  |  1995-02-28  |  9KB  |  226 lines

  1.  
  2. MAKE(1)                 Make Users Manual                 MAKE(1)
  3.  
  4. 名名前前
  5.        make - プログラム開発支援ユーティリティー
  6.  
  7. 形形式式
  8.        make [ option ] ... terget ...
  9.  
  10. 機機能能
  11.        makeはプログラムのコンパイルなどを手順にしたがって実行する
  12.        プログラムです。
  13.  
  14.        細分化されたプログラムのソースファイルをその書き換えられた
  15.        日時を元に必要であればコンパイルやリンクといった作業を自動
  16.        的に行います。
  17.  
  18.        主にCプログラムの開発の複雑なコンパイル作業を簡単に行う こ
  19.        とを目的として作成されていますが、一定の手順でファイルの日
  20.        時を比較しながらプログラムの実行を行うような用途で使うこと
  21.        ができます。
  22.  
  23.        makeは、古くから存在し多くの機能を持った物がありますが、こ
  24.        こで紹介する makeもその一つです。ただ小さくてそれなりの 機
  25.        能を持った物が欲しいと言う要望に基づいて新たに書き起こしま
  26.        した。機能的には、スタンダードな物となっており特別変わった
  27.        機能は、ありません。唯一の特徴としてファイル名の補完が出来
  28.        る程度です。
  29.  
  30.        通常 makeは、コンパイル手順やソースファイルを Makefileと言
  31.        うファイルに記述し、それを元にファイルの因果関係を調べコン
  32.        パイルなどの実行を行います。多少この Makefileの記述は、 複
  33.        雑ですが一定のルールに基づき記述された物は、さほど書き換え
  34.        が必要なく再利用することができます。(ほとんどの場合、プロ
  35.        グ ラ ム名とオブジェクト名を変更するだけで使用できるでしょ
  36.        う)
  37.  
  38.        正しく記述された Makefileがあればどんなにソールファイル が
  39.        分断されていようと単純に
  40.  
  41.               make
  42.  
  43.        と実行するだけで正しい手順でコンパルおよびリンクを実行しプ
  44.        ログラムを作成することが出来るでしょう。
  45.  
  46. 動動作作
  47.        makeが実行されるとまず、デェフォルトの設定を行い次に環境変
  48.        数 の MAKEFILEで指定されたファイルを読み込み現在設定されて
  49.        いる環境変数がすべて内部の変数に取り込まれます。そして  -f
  50.        fileで指定された場合は、そのファイルを読み込み、もし指定さ
  51.        れない場合は、 Makefileと言う名前のカレントディレクトリ 上
  52.        の ファイルを読み込みます。最後にオプションで make実行時に
  53.        指定された macro=stringを内部変数に設定します。
  54.  
  55. Make                       Version 0.12                         1
  56.  
  57. MAKE(1)                 Make Users Manual                 MAKE(1)
  58.  
  59.        設定は、複数の箇所で重複して設定してもかまいませんが、最後
  60.        に設定された物が有効になります。
  61.  
  62.        Makefileが 正常に読み込みまれると makeは、すべてのマクロ変
  63.        数の設定を先に行い、次に最初に定義された因果関係式のみ比較
  64.        し ます。したがって通常 Makefileには、作成するプログラムの
  65.        名前が targetとなる因果関係式を一番最初に記述し、次にそ の
  66.        プ ログラムを構成するオブジェクトファイル名が targetとなる
  67.        因果関係式を定義します。
  68.  
  69.        makeが因果関係式を比較する場合、ファイルの日時の比較を行う
  70.        前 にその関係式の構成ファイルが targetとなる因果関係式が定
  71.        義されているかチェックします。もし存在する場合や推測できる
  72.        場合は、さきにそれを比較するようにし、さらにその構成ファイ
  73.        ルもチェックします。最終的にその構成ファイルが targetと な
  74.        らなくなると随時ファイルの作成日時を比較し必要ならば、コマ
  75.        ンドを実行します。
  76.  
  77.        また、構成ファイルが targetとなる因果関係式を定義しなく て
  78.        も拡張子による暗黙の因果関係が成立するファイルが存在する場
  79.        合は、自動的にその比較およびコマンドの実行を行います。正し
  80.        く こ の 暗 黙 の 因 果 関 係 式を定義すれば、ほんの数行の
  81.        Makefileを記述するだけですみますが、複雑な使い方をすると思
  82.        わぬコマンドの実行を行ってしまうので注意が必要です。
  83.  
  84. オオププシショョンン
  85.        -a   すべての因果関係式を比較します
  86.  
  87.        -d   makeの 動作をチェックします。実際にコマンドは実行しま
  88.             せん
  89.  
  90.        -v   makeの動作状況を表示します
  91.  
  92.        -f file
  93.             記述ファイルの指定を行います。指定しない場合は、カ レ
  94.             ントディレクトリの Makefileという名前のファイルを読み
  95.             込みます
  96.  
  97.        macro=string
  98.             マクロの定義を行います
  99.  
  100.        target
  101.             指定した因果関係式のみ比較ます
  102.  
  103. MAKEFILE
  104.        マクロ変数の定義
  105.  
  106.               macro = strings ...
  107.  
  108.        macroに使用できる文字は"A-Z","a-z","_"で定義する行頭にスペ
  109.  
  110. Make                       Version 0.12                         2
  111.  
  112. MAKE(1)                 Make Users Manual                 MAKE(1)
  113.  
  114.        ースもしくわタブを入れることはできません。 stringsは、任意
  115.        の文字で構成でき中にマクロの展開を入れ子にすることが可能で
  116.        すが無限に展開されるような入れ子は、禁止されています。(ま
  117.        た深い入れ子もエラーになります)
  118.  
  119.        マクロ変数の参照は、 $(macro)で参照され下記の定義文中で 使
  120.        用することができます。またマクロ変数内の文字列の置き換えを
  121.        行うことができます。 $(macro:string1=string2)設定されい る
  122.        macro内 の string1に一致する文字列を string2に置き換えて展
  123.        開します。(大小英文字を区別します)
  124.  
  125.        また、"*"および"?"を含む文字列をマクロ名として展開した場合
  126.        それをワイルドカードとしてファイル名の補完を行って展開しま
  127.        す(英字は小文字で展開します)さらに上記の文字列の置き換え
  128.        との併用も可能です
  129.  
  130.        因果関係式の定義
  131.  
  132.               target ...  : [dependency] ...
  133.                      [command]
  134.                      ...
  135.  
  136.        targetファ イルは、 dependencyファイルによって構成されてい
  137.        る。と言う意味の定義を行います。もし dependencyファイル の
  138.        最終変更日時が targetファイルより新しい場合に[ command ]が
  139.        実行されます。また depndencyを省略すると、常に実行される因
  140.        果関係式になります。 [ command ]の行頭には、必ずスペースも
  141.        しくわタブが必要です。さらにcommandの頭に以下の文字を指 定
  142.        するとこによりcommandの実行方法を変えることができます。
  143.  
  144.        @    コマンド実行時の表示を行いません。
  145.  
  146.        -    コ マ ン ドがエラ-終了しても処理を中断しません。通常
  147.             makeは、起動したコマンドの終了ステ-タスが0でない 場
  148.             合、すべての処理を中断します。
  149.  
  150.        +    環 境変数の"SHELL"または"COMSPEC"で指定されたプログラ
  151.             ムを通してコマンドを起動します。ただ し"CD"や"ECHO"な
  152.             ど のコマンドは、無条件で上記指定のプログラムを通して
  153.             起動されます。環境変数が指 定 さ れ て い な い 場 合
  154.             は"COMMAND.COM"として処理します。
  155.  
  156.        拡張子による暗黙のコマンドの定義
  157.  
  158.               .fromext.toext :
  159.                      [command]
  160.                      ...
  161.  
  162.        ファイルの拡張子によって暗黙のコマンドを指定することが可能
  163.        です。もし上記の因果関係式でcommandを指定しなかった場 合、
  164.        このコマンドが実行されます。さらに暗黙の因果関係を入れ子で
  165.  
  166. Make                       Version 0.12                         3
  167.  
  168. MAKE(1)                 Make Users Manual                 MAKE(1)
  169.  
  170.        推論してコマンドを実行します。ただし下記の拡張子の定 義 を
  171.        行ってある拡張子のみこの定義が行えますので必ず下記の定義を
  172.        行ってからしてください。
  173.  
  174.        初期化されている拡張子の定義
  175.  
  176.               .SUFFIXES: .lzh .zip .zoo .lzs .gz .z .Z
  177.               .SUFFIXES: .dvi .tex .ref
  178.               .SUFFIXES: .lst .map .lnk .sym .mak .def
  179.               .SUFFIXES: .exe .exp .exg .com .rex
  180.               .SUFFIXES: .lib .obj .dlg .asm
  181.               .SUFFIXES: .o .a .c .cc .p .f .r .y .l .s .h
  182.  
  183.        また暗黙のコマンドの定義では、以下の特殊マクロ変数を使用す
  184.        ることができます。
  185.  
  186.        $*     targetの ベース名(拡張子を省くファイル名)に展開し
  187.               ます。
  188.  
  189.        $@     targetのファイル名に展開します。
  190.  
  191.        @<     dependencyのファイル名に展開します。
  192.  
  193.        $?     すべての dependencyのファイル名に展開します。
  194.  
  195.    例例
  196.        CC = gcc
  197.        CFLAGS = -O -g
  198.        LDLIBS = -lm
  199.  
  200.        PROG = make
  201.        OBJS = make.o lib.o wild.o
  202.        #OBJS = $(*.c:.c=.o)
  203.  
  204.        $(PROG)        :    $(OBJS)
  205.             $(CC) $(OBJS) $(LDLIBS) -o $(PROG)
  206.  
  207.        $(OBJS)        :    defs.h
  208.  
  209.        .c.o :
  210.             $(CC) $(CFLAGS) -c $<
  211.  
  212. 配配布布
  213.        このプログラムの改良、移植、転載、などは、自由に行っ て も
  214.        らって結構です。また作者に報告する必要もありません。できれ
  215.        ば、改変された物であることの明記をしていただければ幸 い で
  216.  
  217. Make                       Version 0.12                         4
  218.  
  219. MAKE(1)                 Make Users Manual                 MAKE(1)
  220.  
  221.        す。さらにソ-スコ-ドも同時に公開していただいてさらなる改
  222.        良が自由に行われるようにすることを希望します。
  223.  
  224. Make                       Version 0.12                         5
  225.  
  226.